<%--
  Created by IntelliJ IDEA.
  User: 您的名字
  Version: 1.0
 --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<html>
<head>
    <title>EasyUI CRUD 示例页面</title>
    <meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1.0">
    <base href="<%=request.getContextPath()%>/">
    <!-- 引入 EasyUI 的默认主题样式 -->
    <link rel="stylesheet" type="text/css" href="static/js/easyui/themes/bootstrap/easyui.css">
    <!-- 引入 EasyUI 的图标样式 -->
    <link rel="stylesheet" type="text/css" href="static/js/easyui/themes/icon.css">
    <!-- 引入自定义的公共CSS -->
    <link rel="stylesheet" type="text/css" href="static/css/common.css"/>
    <!-- 引入省市区的公共CSS -->
    <link rel="stylesheet" type="text/css" href="static/css/address.css"/>
    <!-- 引入 EasyUI 默认的 jQuery（无需单独引入 jQuery） -->
    <script src="static/js/easyui/jquery.min.js"></script>
    <!-- 引入 EasyUI 的核心 JS 文件 -->
    <script src="static/js/easyui/jquery.easyui.min.js"></script>
    <!-- 引入 EasyUI 的中文语言包 -->
    <script src="static/js/easyui/locale/easyui-lang-zh_CN.js"></script>
    <!-- 引入自定义的公共脚本 -->
    <script src="static/js/owner/common.js"></script>
    <!-- 引入自定义的公共脚本 -->
    <script src="static/js/owner/dataGrid.js"></script>
    <!-- 引入 moment.js 库，用于处理日期和时间 -->
    <script src="static/js/owner/moment.min.js"></script>
    <style type="text/css">
        /* 整体布局样式 */
        .container {
            width: 90%;
            margin: 20px auto;
            font-family: Arial, sans-serif;
        }

        /* 标题样式 */
        .page-title {
            font-size: 24px;
            color: #333;
            margin-bottom: 20px;
            padding-bottom: 10px;
            border-bottom: 1px solid #ddd;
        }

        /* 按钮区域样式 */
        .btn-section {
            margin-bottom: 20px;
            padding: 15px;
            background-color: #f7f7f7;
            border-radius: 5px;
        }

        /* 按钮样式 */
        .test-btn {
            margin-right: 10px;
            padding: 8px 15px;
            color: white;
            background-color: #1E90FF;
            border: none;
            border-radius: 4px;
            cursor: pointer;
        }

        .test-btn:hover {
            background-color: #0078D7;
        }

        /* 输入框样式 */
        .task-input {
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
            margin-right: 10px;
            width: 60px;
        }

        /* 结果区域样式 */
        .result-section {
            margin-top: 20px;
            padding: 15px;
            background-color: #f7f7f7;
            border-radius: 5px;
        }

        /* 结果标题样式 */
        .result-title {
            font-size: 18px;
            color: #333;
            margin-bottom: 10px;
            padding-bottom: 5px;
            border-bottom: 1px solid #ddd;
        }

        /* 结果内容样式 */
        .result-content {
            padding: 10px;
            background-color: white;
            border: 1px solid #ddd;
            border-radius: 4px;
            min-height: 100px;
            max-height: 400px;
            overflow-y: auto;
        }

        /* 池状态样式 */
        .pool-status {
            margin-top: 20px;
            padding: 10px;
            background-color: #e8f5ff;
            border-left: 4px solid #1E90FF;
            font-family: monospace;
        }
    </style>
</head>
<body>
<div class="container">
    <h1 class="page-title">Spring线程池测试</h1>

    <div class="btn-section">
        <h2>@Async注解方式测试</h2>
        <button class="test-btn" id="testAsync">测试@Async异步任务</button>
        <span>（任务会在后台执行，可在控制台查看日志）</span>
    </div>

    <div class="btn-section">
        <h2>ThreadPoolExecutor方式测试</h2>
        <button class="test-btn" id="testThreadPool">测试ThreadPoolExecutor任务</button>
        <span>（任务会在后台执行，可在控制台查看日志）</span>
    </div>

    <div class="btn-section">
        <h2>批量任务测试</h2>
        <input type="number" class="task-input" id="taskCount" value="5" min="1" max="20">
        <button class="test-btn" id="testBatchTask">提交批量任务</button>
        <span>（可以设置任务数量，默认5个）</span>
    </div>

    <div class="btn-section">
        <h2>线程池状态</h2>
        <button class="test-btn" id="refreshStatus">刷新状态</button>
        <div class="pool-status" id="poolStatus">
            点击"刷新状态"按钮获取线程池状态
        </div>
    </div>

    <div class="result-section">
        <h2 class="result-title">执行结果</h2>
        <pre class="result-content" id="resultContent"></pre>
    </div>
</div>

<script type="text/javascript">
    // 显示结果的函数
    function showResult(data) {
        $('#resultContent').html(JSON.stringify(data, null, 2));
    }

    // 刷新线程池状态
    function refreshPoolStatus() {
        $.ajax({
            url: 'thread-pool/status',
            type: 'GET',
            dataType: 'json',
            success: function(data) {
                $('#poolStatus').text(data.threadPoolInfo);
            },
            error: function(xhr) {
                $('#poolStatus').text('获取状态失败: ' + xhr.statusText);
            }
        });
    }

    // 页面加载完成后绑定事件
    $(function () {
        // 测试@Async异步任务
        $('#testAsync').click(function() {
            $.ajax({
                url: 'thread-pool/async-task',
                type: 'GET',
                dataType: 'json',
                success: function(data) {
                    showResult(data);
                    setTimeout(refreshPoolStatus, 500); // 延迟刷新状态
                },
                error: function(xhr) {
                    showResult({error: xhr.statusText});
                }
            });
        });

        // 测试ThreadPoolExecutor
        $('#testThreadPool').click(function() {
            $.ajax({
                url: 'thread-pool/thread-pool',
                type: 'GET',
                dataType: 'json',
                success: function(data) {
                    showResult(data);
                    setTimeout(refreshPoolStatus, 500); // 延迟刷新状态
                },
                error: function(xhr) {
                    showResult({error: xhr.statusText});
                }
            });
        });

        // 测试批量任务
        $('#testBatchTask').click(function() {
            const count = $('#taskCount').val();
            $.ajax({
                url: 'thread-pool/batch-tasks',
                type: 'GET',
                data: {count: count},
                dataType: 'json',
                success: function(data) {
                    showResult(data);
                    setTimeout(refreshPoolStatus, 500); // 延迟刷新状态
                },
                error: function(xhr) {
                    showResult({error: xhr.statusText});
                }
            });
        });

        // 刷新状态
        $('#refreshStatus').click(function() {
            refreshPoolStatus();
        });

        // 初始加载状态
        refreshPoolStatus();
    });
</script>
</body>
</html>
